/**
 * 输入两棵二叉树A和B，判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
 * B是A的子结构， 即 A中有出现和B相同的结构和节点值。
 * https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/
 */
class IsSubStructure {
    public boolean isSameTree(TreeNode A,TreeNode B){
        if(A==null&&B==null){
            return true;
        }
        if(A==null&&B!=null){
            return false;
        }
        
       if(A!=null&&B==null){
           return true;
       }
        if(A.val!=B.val){
            return false;
        }
        return isSameTree(A.left,B.left)&&isSameTree(A.right,B.right);
    }
    public boolean isSubStructure(TreeNode A, TreeNode B) {
      if(A==null||B==null){
          return false;
      }
      if(isSameTree(A,B)){
          return true;
      }
      return isSubStructure(A.left,B)||isSubStructure(A.right,B);
    }
}